<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    /*
        1.分别有   Number()        parseInt()          parseFloat()

            - Number的转换规则
                -boolean:   true为1 false为0
                -数值    :   直接转换
                -null   :   返回0
                -undefined: 返回NaN
                -字符串
                    -如果包含数字字符,包括数值前面的加减号,返回一个十进制的数(忽略前面的0)
                    -有效的浮点类型,如1.1,则返回1.1(同样的忽略前面的0)
                    -进制
                        -八进制 0o10   返回8
                        -十六进制 0xf   返回15
                    -空字符串   返回0
                    -其他情况   返回NaN
     */


    console.log(Number(false))              // 0
    console.log(Number(1))                  // 1
    console.log(Number(null))               // 0
    console.log(Number(undefined))          // NaN
    console.log('------Number()字符串-----')
    console.log(Number('-1.2'))             // -1.2
    console.log(Number('-1.30'))            // -1.3
    console.log(Number('0o10'))             // 8
    console.log(Number('0xf'))              // 15
    console.log(Number(''))                 // 0
    console.log(Number('12a'))              // NaN
    console.log(Number('b12'))              // NaN

    // 2.通常使用parseInt()
    /*
        2.1.规则:
            1.字符串最前面的空格会被忽略,从第一个非空格字符串开始转换          //
            2.如果第一个字符不是数字/加号/减号,会立即返回NaN
            3.如果第一个字符是数字//加号/减号,则依次检测每个字符,直到碰到非数字字符或结尾
     */
    console.log('------parseInt-----')
    console.log(parseInt(' -12'))  // -12
    console.log(parseInt(''))  // NaN
    console.log(parseInt('b12'))  // NaN
    console.log(parseInt('12b'))  // 12
    console.log(parseInt('12.2'))  // 12

    // 2.2.可接收第二个参数:用于指定进制数,默认为10
    console.log('------parseInt第二个参数-----')
    console.log(parseInt('1f',16))  //31
    console.log(parseInt('af'))  // NaN
    console.log(parseInt('af',10))  // NaN

    // 3.parseFloat
    /*
        -相同点
            -基本和parseInt一样
        -不同点
            -只能解析10进制,所以不能有第二个参数
            -可以出现小数点,但是第二个小数点无效
     */
    console.log('------parseFloat-----')
    console.log(parseFloat('123blue'))  // 123
    console.log(parseFloat('0xA'))  // 0
    console.log(parseFloat('22.3')) // 22.3
    console.log(parseFloat('1.2.3'))    //1.2
    console.log(parseFloat('04.3'))     //4.3
    console.log(parseFloat('3.12e4'))   //31200
</script>
</body>
</html>